# __new__方法   先将class给object生成内存空间
# __init__方法  然后把init初始化一下
#
# 先new 再调init
class Person(object):
    # cls 就是person
    # @classmethod 如果在这里加这个注解 那么p4就生效了 但是其他的就会报错
    def __new__(cls):
        print('执行new')
        print(cls)
        return object.__new__(cls)

    def __init__(self):
        print(self)
        print('执行init')
    def cc(self):
        print('cc')


p1 = Person()
## 下面代码等价
print('下面代码等价',end='\n\n')
print('执行new')
print(Person)
p2 = object.__new__(Person)
p2.__init__()

## 下面代码也等价
print('下面代码也等价',end='\n\n')
p3 = Person.__new__(Person)
p3.__init__()

#
# print('下面代码也等价',end='\n\n')
# p4 = Person.__new__()
# p4.__init__()
